package br.com.mtech.ctrlliberty.clientjar.entity;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
@Table(name="tbInternet")
@SequenceGenerator(name="sqInternet", sequenceName="sqInternet", allocationSize=10)
public class InternetVO implements Serializable{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	@Id
	@Column(name="idInternet")
	@GeneratedValue(generator="sqInternet", strategy=GenerationType.SEQUENCE)
	private Long id;
		
	@Column(name="dsUrl")
	private String url;
	
	@Column(name="nmSite")
	private String nomeSite;
	
	@Column(name="qtDados", nullable=false, precision=3)
	private Double qtdDados;
	
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name="dtAcesso")
	private Date dataAcesso;
	
	@OneToOne(fetch=FetchType.EAGER, cascade={CascadeType.ALL})
	@JoinColumn(name="idCoordenada")
	private CoordenadaGPSVO coordenada;
	
	@ManyToOne
	@JoinColumn(name="idTelefone")
	private TelefoneVO telefone;

	public InternetVO(){
		
	}
	
	public InternetVO(String url, String nomeSite, Double qtdDados,
			Date dataAcesso, TelefoneVO telefone) {
		super();
		this.url = url;
		this.nomeSite = nomeSite;
		this.qtdDados = qtdDados;
		this.dataAcesso = dataAcesso;
		this.telefone = telefone;
	}
	
	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getUrl() {
		return url;
	}

	public void setUrl(String url) {
		this.url = url;
	}

	public String getNomeSite() {
		return nomeSite;
	}

	public void setNomeSite(String nomeSite) {
		this.nomeSite = nomeSite;
	}

	public Date getDataAcesso() {
		return dataAcesso;
	}

	public void setDataAcesso(Date dataAcesso) {
		this.dataAcesso = dataAcesso;
	}

	public CoordenadaGPSVO getCoordenada() {
		return coordenada;
	}

	public void setCoordenada(CoordenadaGPSVO coordenada) {
		this.coordenada = coordenada;
	}

	public TelefoneVO getTelefone() {
		return telefone;
	}

	public void setTelefone(TelefoneVO telefone) {
		this.telefone = telefone;
	}

	public Double getQtdDados() {
		return qtdDados;
	}

	public void setQtdDados(Double qtdDados) {
		this.qtdDados = qtdDados;
	}
	
}
